package cn.hongwei.mall.pms.config;

import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.lang.Nullable;

import javax.annotation.PostConstruct;

/**
 * @author Great
 * @email 1224028994@qq.com
 */
@Configuration
@Slf4j
public class RabbitConfig {

    @Autowired
    private RabbitTemplate rabbitTemplate;

    @PostConstruct
    public void init(){
        //消息到达交换机确认
        rabbitTemplate.setConfirmCallback((correlationData,ack,cause)->{
            if(!ack){
                log.error("消息没有到达交换机，原因>>>{}",cause);
            }
        });
        //消息到达队列确认
        rabbitTemplate.setReturnCallback((message,replyCode,replyText,exchange,routingKey)->{
            log.error("消息没有到达队列. 交换机>>>{},路由键>>>{},消息内容>>>{},错误文本>>>{}",exchange,routingKey,new String(message.getBody()),replyText);
        });
    }
}
